//package com.shortlink.utils;
//
//import cn.hutool.json.JSONUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.TimeUnit;
//
//@Component
//public class RedisProxy {
//
//    @Autowired
//    StringRedisTemplate stringRedisTemplate;
//
//    /**
//     * 存放string
//     * @param key
//     * @param value
//     */
//    public void set(String key, String value) {
//        stringRedisTemplate.opsForValue().set(key, value);
//    }
//
//    /**
//     * 存放object
//     * @param key
//     * @param value
//     */
//    public void set(String key, Object value) {
//        stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(value));
//    }
//
//    /**
//     * 存放object，设置过期时间
//     * @param key
//     * @param value
//     * @param time
//     * @param unit
//     */
//    public void set(String key, Object value, Long time, TimeUnit unit) {
//        stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(value), time, unit);
//    }
//
//    public void set(String key, String value, Long time, TimeUnit unit) {
//        stringRedisTemplate.opsForValue().set(key, value, time, unit);
//    }
//
//    /**
//     * 得到字符串
//     * @param key
//     * @return
//     */
//    public String get(String key) {
//        return stringRedisTemplate.opsForValue().get(key);
//    }
//
//    /**
//     * 得到object
//     * @param key
//     * @param type
//     * @return
//     * @param <T>
//     */
//    @SuppressWarnings("unchecked")
//    public <T> T get(String key, Class<T> type) {
//        String json = stringRedisTemplate.opsForValue().get(key);
//        if (json != null) {
//            return JSONUtil.toBean(json, type);
//        }
//        return null;
//    }
//
//    public boolean expire(String key, long time, TimeUnit unit) {
//        return stringRedisTemplate.expire(key, time, unit);
//    }
//
//
//    // 删除键
//    public void delete(String key) {
//        stringRedisTemplate.delete(key);
//    }
//
//    // 对Hash进行操作，保存键值对
//    public void hashSet(String key, String hashKey, Object hashValue) {
//        stringRedisTemplate.opsForHash().put(key, hashKey, JSONUtil.toJsonStr(hashValue));
//    }
//
//    // 从Hash中获取值
//    public String hashGet(String key, String hashKey) {
//        return (String) stringRedisTemplate.opsForHash().get(key, hashKey);
//    }
//
//    @SuppressWarnings("unchecked")
//    public <T> T hashGet(String key, String hashKey, Class<T> type) {
//        String json = (String) stringRedisTemplate.opsForHash().get(key, hashKey);
//        if (json != null) {
//            return JSONUtil.toBean(json, type);
//        }
//        return null;
//    }
//
//    // 删除Hash中的字段
//    public void hashDelete(String key, Object... hashKeys) {
//        stringRedisTemplate.opsForHash().delete(key, hashKeys);
//    }
//
//    // 判断键是否存在
//    public Boolean hasKey(String key) {
//        return stringRedisTemplate.hasKey(key);
//    }
//
//    // 递增操作
//    public Long increment(String key, long delta) {
//        return stringRedisTemplate.opsForValue().increment(key, delta);
//    }
//
//    // 递减操作
//    public Long decrement(String key, long delta) {
//        return stringRedisTemplate.opsForValue().increment(key, -delta);
//    }
//}